সি প্রোগ্রামিং ভাষায় ফাইল হ্যান্ডলিং ফাংশনগুলো ব্যবহার করে প্রোগ্রামে ফাইল তৈরি, পড়া, লেখা, ফাইল থেকে ডেটা নেওয়া, এবং ফাইল বন্ধ করা যায়। ফাইল হ্যান্ডলিংয়ের জন্য সি স্ট্যান্ডার্ড লাইব্রেরির stdio.h
হেডার ফাইলের ফাংশনগুলো ব্যবহার করা হয়।
নিচে ফাইল হ্যান্ডলিং ফাংশন এবং তাদের কাজ সম্পর্কে বিস্তারিত আলোচনা করা হলো:
fopen()
– ফাইল খোলাfopen()
ফাংশনটি একটি ফাইল খোলার জন্য ব্যবহৃত হয়। এটি একটি ফাইল পয়েন্টার রিটার্ন করে, যা পরবর্তী ফাইল অপারেশনগুলিতে ব্যবহৃত হয়। ফাইলটি বিভিন্ন মোডে খোলা যেতে পারে যেমন শুধুমাত্র পড়া (r
), লেখা (w
), এবং অ্যাপেন্ড (a
)।
FILE *fopen(const char *filename, const char *mode);
ফাইল মোড:
"r"
– শুধুমাত্র পড়ার জন্য ফাইল খোলে। ফাইলটি থাকা বাধ্যতামূলক।"w"
– লেখার জন্য ফাইল খোলে। ফাইলটি না থাকলে তৈরি করে, থাকলে মুছে ফেলে।"a"
– ফাইলের শেষে লেখার জন্য খোলে। ফাইলটি না থাকলে তৈরি করে।"rb"
, "wb"
, "ab"
– বাইনারি মোডে ফাইল খোলে।#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
printf("File not opened.\n");
return 1;
}
fprintf(file, "Hello, World!\n"); // ফাইলে লেখা
fclose(file); // ফাইল বন্ধ করা
return 0;
}
fclose()
– ফাইল বন্ধ করাfclose()
ফাংশনটি ফাইল বন্ধ করতে ব্যবহৃত হয়। এটি ফাইলের সাথে সম্পর্কিত সমস্ত রিসোর্স মুক্ত করে এবং ফাইল পয়েন্টারটি অবৈধ করে দেয়।
int fclose(FILE *file_pointer);
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file != NULL) {
fprintf(file, "Hello, World!\n");
fclose(file); // ফাইল বন্ধ করা
}
return 0;
}
fread()
– ফাইল থেকে ডেটা পড়াfread()
ফাংশনটি একটি ফাইল থেকে নির্দিষ্ট পরিমাণ ডেটা পড়তে ব্যবহৃত হয়। এটি সাধারণত বাইনারি ফাইল থেকে ডেটা পড়তে ব্যবহৃত হয়।
size_t fread(void *ptr, size_t size, size_t count, FILE *file_pointer);
ptr
– যেখানে ডেটা স্টোর হবে (বাফার)।size
– প্রতি এলিমেন্টের আকার।count
– মোট এলিমেন্টের সংখ্যা।file_pointer
– ফাইল পয়েন্টার।#include <stdio.h>
int main() {
FILE *file = fopen("example.bin", "rb");
if (file == NULL) {
printf("File not found.\n");
return 1;
}
int buffer[10];
fread(buffer, sizeof(int), 10, file);
fclose(file);
for (int i = 0; i < 10; i++) {
printf("%d ", buffer[i]);
}
return 0;
}
fwrite()
– ফাইলে ডেটা লেখাfwrite()
ফাংশনটি ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়। এটি সাধারণত বাইনারি ফাইলের জন্য ব্যবহৃত হয়।
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *file_pointer);
ptr
– যেখান থেকে ডেটা লেখা হবে।size
– প্রতি এলিমেন্টের আকার।count
– মোট এলিমেন্টের সংখ্যা।file_pointer
– ফাইল পয়েন্টার।#include <stdio.h>
int main() {
FILE *file = fopen("example.bin", "wb");
if (file == NULL) {
printf("File not opened.\n");
return 1;
}
int data[] = {1, 2, 3, 4, 5};
fwrite(data, sizeof(int), 5, file);
fclose(file);
return 0;
}
fprintf()
– ফাইলে ফরম্যাটেড আউটপুট লেখাfprintf()
ফাংশনটি ফাইলের মধ্যে ফরম্যাটেড আউটপুট লেখার জন্য ব্যবহৃত হয়। এটি printf()
এর মতো, তবে আউটপুট কনসোলের পরিবর্তে ফাইলে লেখা হয়।
int fprintf(FILE *file_pointer, const char *format, ...);
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
printf("File not opened.\n");
return 1;
}
fprintf(file, "Name: %s\nAge: %d\n", "Alice", 30);
fclose(file);
return 0;
}
fgets()
– ফাইল থেকে স্ট্রিং পড়াfgets()
ফাংশনটি ফাইল থেকে একটি লাইন বা নির্দিষ্ট সংখ্যক ক্যারেক্টার পড়তে ব্যবহৃত হয়। এটি সাধারণত টেক্সট ফাইল থেকে ডেটা পড়তে ব্যবহৃত হয়।
char *fgets(char *str, int n, FILE *file_pointer);
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
char str[100];
if (file == NULL) {
printf("File not found.\n");
return 1;
}
while (fgets(str, sizeof(str), file) != NULL) {
printf("%s", str);
}
fclose(file);
return 0;
}
fputs()
– ফাইলে স্ট্রিং লেখাfputs()
ফাংশনটি একটি স্ট্রিং ফাইলে লেখার জন্য ব্যবহৃত হয়। এটি fprintf()
এর তুলনায় দ্রুত এবং সরাসরি স্ট্রিং লেখার জন্য উপযুক্ত।
int fputs(const char *str, FILE *file_pointer);
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
printf("File not opened.\n");
return 1;
}
fputs("Hello, World!\n", file);
fclose(file);
return 0;
}
ফাংশন | কাজ |
---|---|
fopen() | ফাইল খোলে এবং একটি পয়েন্টার রিটার্ন করে |
fclose() | ফাইল বন্ধ করে |
fread() | ফাইল থেকে ডেটা পড়ে |
fwrite() | ফাইলে ডেটা লেখে |
fprintf() | ফরম্যাটেড আউটপুট ফাইলে লেখে |
fgets() | ফাইল থেকে একটি স্ট্রিং পড়ে |
fputs() | ফাইলে একটি স্ট্রিং লেখে |
এই ফাংশনগুলো সি প্রোগ্রামে ফাইল হ্যান্ডলিং সহজ এবং কার্যকর করে তোলে। এগুলোর মাধ্যমে প্রোগ্রামাররা ফাইল তৈরি, মডিফাই এবং রিড করতে পারেন, যা প্রোগ্রামের জন্য ডেটা সংরক্ষণ এবং পরিচালনায় সহায়ক।
fopen()
এবং fclose()
ফাংশনের মাধ্যমে ফাইল খোলা এবং বন্ধ করাসি প্রোগ্রামিং ভাষায় ফাইল পরিচালনার জন্য fopen()
এবং fclose()
ফাংশনটি ব্যবহৃত হয়। fopen()
ফাংশনটি ফাইল খোলে এবং fclose()
ফাংশনটি ফাইল বন্ধ করে। ফাইল অপারেশনের জন্য stdio.h
হেডার ফাইলটি ব্যবহার করা হয়।
fopen()
– ফাইল খোলাfopen()
ফাংশনটি একটি ফাইল খোলার জন্য ব্যবহৃত হয় এবং একটি FILE
পয়েন্টার রিটার্ন করে। এই পয়েন্টারটি ফাইলের অবস্থান নির্দেশ করে এবং ফাইলের সাথে কার্যক্রম পরিচালনার জন্য ব্যবহৃত হয়। ফাইলটি খোলার সময় fopen()
-এ দুটি প্যারামিটার দেওয়া হয়:
ফাইল মোডসমূহ:
"r"
– শুধুমাত্র পড়ার জন্য (ফাইলটি অবশ্যই বিদ্যমান থাকতে হবে)।"w"
– লেখার জন্য (ফাইলটি বিদ্যমান না থাকলে নতুন ফাইল তৈরি হবে; বিদ্যমান থাকলে পুরানো ডেটা মুছে যাবে)।"a"
– ফাইলের শেষে লেখার জন্য (ফাইলটি বিদ্যমান না থাকলে নতুন ফাইল তৈরি হবে)।"r+"
– পড়া এবং লেখার জন্য (ফাইলটি বিদ্যমান থাকতে হবে)।"w+"
– পড়া এবং লেখার জন্য, বিদ্যমান ডেটা মুছে নতুনভাবে লেখা (ফাইলটি বিদ্যমান না থাকলে নতুন ফাইল তৈরি হবে)।"a+"
– পড়া এবং ফাইলের শেষে লেখার জন্য (ফাইলটি বিদ্যমান না থাকলে নতুন ফাইল তৈরি হবে)।সিঙ্কট্যাক্স:
FILE *fopen(const char *filename, const char *mode);
উদাহরণ:
#include <stdio.h>
int main() {
FILE *file;
// "example.txt" ফাইলটি লেখার জন্য খোলা
file = fopen("example.txt", "w");
if (file == NULL) {
printf("Error opening file.\n");
return 1;
}
fprintf(file, "Hello, World!\n"); // ফাইলে লেখা
printf("File opened and written successfully.\n");
// ফাইল বন্ধ করা
fclose(file);
return 0;
}
fclose()
– ফাইল বন্ধ করাfclose()
ফাংশনটি একটি খোলা ফাইল বন্ধ করতে ব্যবহৃত হয়। এটি ফাইলের জন্য ব্যবহৃত সমস্ত রিসোর্স মুক্ত করে এবং ফাইল পয়েন্টারটি অবৈধ করে দেয়। ফাইল বন্ধ না করলে ফাইলের তথ্য হারিয়ে যেতে পারে এবং মেমোরি লিক হতে পারে, তাই প্রতিবার ফাইল ব্যবহারের পরে fclose()
ব্যবহার করা উচিত।
সিঙ্কট্যাক্স:
int fclose(FILE *file_pointer);
উদাহরণ:
#include <stdio.h>
int main() {
FILE *file;
// "example.txt" ফাইলটি লেখার জন্য খোলা
file = fopen("example.txt", "w");
if (file == NULL) {
printf("Error opening file.\n");
return 1;
}
fprintf(file, "Hello, World!\n"); // ফাইলে লেখা
printf("File opened and written successfully.\n");
// ফাইল বন্ধ করা
if (fclose(file) == 0) {
printf("File closed successfully.\n");
} else {
printf("Error closing file.\n");
}
return 0;
}
নিচে fopen()
এবং fclose()
ফাংশনের সাহায্যে ফাইল খোলা, লেখা, এবং পড়ার উদাহরণ দেওয়া হলো।
#include <stdio.h>
int main() {
FILE *file;
char buffer[100];
// "example.txt" ফাইলটি লেখার জন্য খোলা
file = fopen("example.txt", "w");
if (file == NULL) {
printf("Error opening file for writing.\n");
return 1;
}
// ফাইলে লেখা
fprintf(file, "Hello, World!\nWelcome to C programming.\n");
fclose(file); // ফাইল বন্ধ করা
// "example.txt" ফাইলটি পড়ার জন্য খোলা
file = fopen("example.txt", "r");
if (file == NULL) {
printf("Error opening file for reading.\n");
return 1;
}
// ফাইল থেকে পড়া এবং আউটপুটে প্রদর্শন
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", buffer);
}
fclose(file); // ফাইল বন্ধ করা
return 0;
}
fopen()
ফাংশনটি ফাইল খোলার জন্য ব্যবহৃত হয় এবং এটি একটি FILE
পয়েন্টার রিটার্ন করে।fclose()
ফাংশনটি ফাইল বন্ধ করার জন্য ব্যবহৃত হয়, যা ফাইলের জন্য বরাদ্দকৃত রিসোর্স মুক্ত করে।fclose()
ব্যবহার করতে হবে, যাতে ডেটা সঠিকভাবে সংরক্ষিত হয় এবং মেমোরি লিক না হয়।fopen()
এবং fclose()
ফাংশনগুলো ফাইল অপারেশনের জন্য খুবই গুরুত্বপূর্ণ এবং এগুলোর সঠিক ব্যবহার ফাইল ব্যবস্থাপনায় সঠিক কার্যকারিতা নিশ্চিত করে।
fread()
, fwrite()
, এবং fprintf()
এর মাধ্যমে ফাইল থেকে ডেটা পড়া এবং লেখাসি প্রোগ্রামিং ভাষায় fread()
, fwrite()
, এবং fprintf()
ফাংশনগুলো ফাইলের মাধ্যমে ডেটা পড়া এবং লেখা পরিচালনা করার জন্য ব্যবহৃত হয়। এগুলো stdio.h
হেডার ফাইলের অংশ এবং বাইনারি বা টেক্সট ফাইল থেকে ডেটা ম্যানিপুলেট করার জন্য বিশেষভাবে ব্যবহার করা হয়।
এখানে এই ফাংশনগুলোর ব্যবহার এবং তাদের কার্যকারিতা বিস্তারিতভাবে আলোচনা করা হলো।
fread()
– ফাইল থেকে ডেটা পড়াfread()
ফাংশনটি ফাইল থেকে নির্দিষ্ট পরিমাণ ডেটা পড়ে এবং এটি একটি বাফারে স্টোর করে। এটি সাধারণত বাইনারি ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়, তবে এটি টেক্সট ফাইল থেকেও পড়তে পারে। fread()
ফাংশনটি প্রতিটি এলিমেন্টের জন্য ডেটা পড়ে এবং সেগুলো একটি নির্দিষ্ট বাফারে জমা করে।
size_t fread(void *ptr, size_t size, size_t count, FILE *file_pointer);
ptr
– যেখান থেকে ডেটা পড়া হবে (বাফার)।size
– প্রতিটি এলিমেন্টের আকার।count
– মোট এলিমেন্টের সংখ্যা।file_pointer
– ফাইল পয়েন্টার, যেখানে থেকে ডেটা পড়া হবে।#include <stdio.h>
int main() {
FILE *file = fopen("data.bin", "rb"); // বাইনারি ফাইল খোলা
if (file == NULL) {
printf("File not found.\n");
return 1;
}
int buffer[5];
fread(buffer, sizeof(int), 5, file); // ফাইল থেকে 5টি ইন্ট পড়া
for (int i = 0; i < 5; i++) {
printf("%d ", buffer[i]); // পড়া ডেটা আউটপুট
}
fclose(file);
return 0;
}
এখানে fread()
ফাংশনটি 5টি ইন্টিজারের জন্য মেমোরি বরাদ্দ করেছে এবং data.bin
ফাইল থেকে ডেটা পড়েছে।
fwrite()
– ফাইলে ডেটা লেখাfwrite()
ফাংশনটি ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়। এটি বাইনারি ফাইলের জন্য উপযোগী এবং ফাইলের মধ্যে নির্দিষ্ট পরিমাণ ডেটা লেখে।
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *file_pointer);
ptr
– যেখান থেকে ডেটা লেখা হবে।size
– প্রতি এলিমেন্টের আকার।count
– মোট এলিমেন্টের সংখ্যা।file_pointer
– ফাইল পয়েন্টার, যেখানে ডেটা লেখা হবে।#include <stdio.h>
int main() {
FILE *file = fopen("data.bin", "wb"); // বাইনারি ফাইল খোলা
if (file == NULL) {
printf("File not opened.\n");
return 1;
}
int data[] = {1, 2, 3, 4, 5};
fwrite(data, sizeof(int), 5, file); // ফাইলে 5টি ইন্ট লেখা
fclose(file);
return 0;
}
এখানে fwrite()
ফাংশনটি 5টি ইন্টিজার data
অ্যারের মধ্যে থেকে data.bin
ফাইলে লিখেছে।
fprintf()
– ফাইলে ফরম্যাটেড আউটপুট লেখাfprintf()
ফাংশনটি কনসোলের আউটপুটের মতো ফাইলেও ফরম্যাটেড আউটপুট লেখার জন্য ব্যবহৃত হয়। এটি printf()
এর মতোই কাজ করে, তবে আউটপুট কনসোলের পরিবর্তে ফাইলে লেখা হয়।
int fprintf(FILE *file_pointer, const char *format, ...);
file_pointer
– ফাইল পয়েন্টার, যেখানে আউটপুট লেখা হবে।format
– ফরম্যাট স্ট্রিং, যা আউটপুটের স্টাইল নির্ধারণ করে।#include <stdio.h>
int main() {
FILE *file = fopen("output.txt", "w"); // ফাইল লেখার জন্য খোলা
if (file == NULL) {
printf("File not opened.\n");
return 1;
}
fprintf(file, "Name: %s\nAge: %d\n", "John", 30); // ফরম্যাটেড আউটপুট ফাইলে লেখা
fclose(file);
return 0;
}
এখানে fprintf()
ফাংশনটি output.txt
ফাইলে "Name: John"
এবং "Age: 30"
ফরম্যাটে আউটপুট লিখেছে।
ফাংশন | কাজ | সিঙ্কট্যাক্স |
---|---|---|
fread() | ফাইল থেকে ডেটা পড়া | size_t fread(void *ptr, size_t size, size_t count, FILE *file_pointer); |
fwrite() | ফাইলে ডেটা লেখা | size_t fwrite(const void *ptr, size_t size, size_t count, FILE *file_pointer); |
fprintf() | ফাইলের মাধ্যমে ফরম্যাটেড আউটপুট লেখা | int fprintf(FILE *file_pointer, const char *format, ...); |
এই ফাংশনগুলোর মাধ্যমে সি প্রোগ্রামে ফাইল থেকে ডেটা পড়া এবং ফাইলে ডেটা লেখা যায়। fread()
এবং fwrite()
বাইনারি ফাইলের জন্য ব্যবহৃত হয়, যখন fprintf()
ফরম্যাটেড টেক্সট আউটপুট ফাইলে লেখার জন্য ব্যবহৃত হয়।
"r"
, "w"
, "a"
সি প্রোগ্রামিং ভাষায় ফাইল পয়েন্টার এবং ফাইল মোড গুরুত্বপূর্ণ ভূমিকা পালন করে ফাইল ইনপুট এবং আউটপুট অপারেশন পরিচালনার ক্ষেত্রে। ফাইল পয়েন্টার একটি বিশেষ ধরনের পয়েন্টার যা একটি ফাইলের অবস্থান নির্দেশ করে এবং ফাইল মোডগুলো নির্ধারণ করে কিভাবে ফাইলটি খুলবে এবং কিভাবে তার সাথে কাজ করবে।
ফাইল পয়েন্টার হলো একটি পয়েন্টার যা ফাইলের অবস্থান বা পয়েন্টারের মাধ্যমে ফাইলের মধ্যে ডেটা অ্যাক্সেস করতে ব্যবহৃত হয়। যখন একটি ফাইল খোলা হয়, তখন এটি একটি পয়েন্টার প্রদান করে যা ফাইলের প্রথম অক্ষরের অবস্থানকে নির্দেশ করে।
FILE
টাইপের ফাইল পয়েন্টার ব্যবহার করে ফাইলের সাথে কাজ করা হয়। এটি stdio.h
হেডার ফাইলের অংশ।
FILE *file; // ফাইল পয়েন্টার ডিক্লেয়ার করা
file = fopen("example.txt", "r"); // ফাইল খোলা
এখানে, file
একটি ফাইল পয়েন্টার যা example.txt
ফাইলকে নির্দেশ করছে। ফাইল মোড "r"
(পড়ার জন্য) ব্যবহার করা হয়েছে।
"r"
, "w"
, "a"
ফাইল মোডগুলি ফাইল খুলতে ব্যবহৃত হয় এবং ফাইলের সাথে কি ধরনের অপারেশন করা যাবে তা নির্ধারণ করে। সবচেয়ে প্রচলিত তিনটি ফাইল মোড হলো "r"
, "w"
, এবং "a"
।
"r"
ফাইল মোডটি শুধুমাত্র পড়ার জন্য ফাইল খুলতে ব্যবহৃত হয়। এই মোডে, ফাইলটি যদি থাকে তবে সেটি খোলা হয় এবং আপনি ফাইলটি পড়তে পারবেন। কিন্তু যদি ফাইলটি না থাকে, তবে fopen()
ফাংশন NULL
রিটার্ন করবে।
FILE *fopen(const char *filename, "r");
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("File not found\n");
return 1;
}
// ফাইল পড়া
char ch;
while ((ch = fgetc(file)) != EOF) {
printf("%c", ch);
}
fclose(file); // ফাইল বন্ধ
return 0;
}
এখানে, "r"
মোডে ফাইলটি খোলা হয়েছে এবং fgetc()
ফাংশন দ্বারা ফাইল থেকে ক্যারেক্টার পড়া হয়েছে।
"w"
ফাইল মোডটি লেখার জন্য ব্যবহৃত হয়। এই মোডে, যদি ফাইলটি আগে থেকে বিদ্যমান থাকে, তবে এটি মুছে দেয় এবং নতুনভাবে লিখতে শুরু হয়। যদি ফাইলটি না থাকে, তবে একটি নতুন ফাইল তৈরি করা হয়।
FILE *fopen(const char *filename, "w");
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
printf("File could not be opened\n");
return 1;
}
// ফাইলে লেখা
fprintf(file, "Hello, World!\n");
fclose(file); // ফাইল বন্ধ
return 0;
}
এখানে, "w"
মোডে ফাইলটি খোলা হয়েছে এবং fprintf()
ফাংশন ব্যবহার করে ফাইলে লেখা হয়েছে।
"a"
ফাইল মোডটি অ্যাপেন্ড (অর্থাৎ ফাইলের শেষে নতুন ডেটা যোগ করা) করতে ব্যবহৃত হয়। এই মোডে, যদি ফাইলটি আগে থেকেই থাকে, তবে নতুন লেখা ফাইলের শেষে যোগ করা হয়। এবং যদি ফাইলটি না থাকে, তবে একটি নতুন ফাইল তৈরি হয়।
FILE *fopen(const char *filename, "a");
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "a");
if (file == NULL) {
printf("File could not be opened\n");
return 1;
}
// ফাইলে যোগ করা
fprintf(file, "Appending a new line to the file.\n");
fclose(file); // ফাইল বন্ধ
return 0;
}
এখানে, "a"
মোডে ফাইলটি খোলা হয়েছে এবং fprintf()
ফাংশন ব্যবহার করে ফাইলে নতুন লাইন যোগ করা হয়েছে। পুরনো ডেটা অপরিবর্তিত থাকে।
ফাইল মোড | বর্ণনা | ব্যবহার উদাহরণ |
---|---|---|
"r" | শুধুমাত্র ফাইল পড়ার জন্য। ফাইলটি যদি না থাকে, তবে NULL রিটার্ন করবে। | fopen("file.txt", "r"); |
"w" | লেখার জন্য ফাইল খোলবে। ফাইলটি আগে থেকে থাকলে মুছে ফেলা হবে এবং নতুন করে লেখা হবে। | fopen("file.txt", "w"); |
"a" | ফাইলের শেষে ডেটা যোগ করতে ব্যবহৃত হয়। ফাইলটি না থাকলে একটি নতুন ফাইল তৈরি হবে। | fopen("file.txt", "a"); |
"r"
: ফাইলটি পড়তে ব্যবহৃত হয়, তবে ফাইলটি যদি না থাকে, তাহলে এটি NULL
রিটার্ন করবে।"w"
: লেখার জন্য ফাইল খোলে এবং ফাইলটি মুছে দেয় (যদি থাকে)।"a"
: ফাইলের শেষে ডেটা যোগ করার জন্য ব্যবহৃত হয় এবং ফাইলের পূর্বের ডেটা অপরিবর্তিত থাকে।ফাইল মোডের মাধ্যমে আপনি ফাইলের সাথে কী ধরনের অপারেশন করতে চান তা নির্ধারণ করতে পারবেন।
fseek()
, ftell()
, এবং rewind()
এর মাধ্যমে ফাইল নেভিগেশনসি প্রোগ্রামিং ভাষায় ফাইলের মধ্যে ডেটা নেভিগেট করার জন্য fseek()
, ftell()
, এবং rewind()
ফাংশনগুলো ব্যবহৃত হয়। এই ফাংশনগুলো ফাইলের মধ্যে পজিশন পরিবর্তন করতে সাহায্য করে, যা বিশেষ করে যখন আপনি ফাইলের কোনো নির্দিষ্ট অংশে পৌঁছাতে চান অথবা ফাইলের মধ্যে রিড/রাইট অপারেশন করতে চান।
fseek()
– ফাইল পজিশন পরিবর্তন করাfseek()
ফাংশনটি একটি ফাইলের বর্তমান পজিশন পরিবর্তন করে। এটি ফাইলের একটি নির্দিষ্ট অবস্থানে (অথবা একটি শিফট হিসাবে) ফাইল পয়েন্টারকে স্থানান্তর করে।
int fseek(FILE *stream, long offset, int whence);
stream
: এটি সেই ফাইল পয়েন্টার যা খোলা ফাইলকে নির্দেশ করে।offset
: এটি পজিশনের শিফট, এটি একটি ইন্টিজার সংখ্যা যা ফাইলের বর্তমান অবস্থান থেকে কতটা দূরত্বে যেতে হবে তা নির্দেশ করে।whence
: এটি শুরু করার পজিশন নির্ধারণ করে, এবং এর কিছু মান আছে:SEEK_SET
: ফাইলের শুরুর অবস্থান থেকে পজিশন হিসাব করা হবে।SEEK_CUR
: বর্তমান অবস্থান থেকে পজিশন হিসাব করা হবে।SEEK_END
: ফাইলের শেষ অবস্থান থেকে পজিশন হিসাব করা হবে।#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("File not found.\n");
return 1;
}
// ফাইলের 10 বাইট পরে পজিশন সেট করা
fseek(file, 10, SEEK_SET);
printf("Moved 10 bytes from the beginning.\n");
// ফাইলের 5 বাইট পরে বর্তমান অবস্থান থেকে পজিশন সেট করা
fseek(file, 5, SEEK_CUR);
printf("Moved 5 bytes from the current position.\n");
// ফাইলের শেষ থেকে 5 বাইট আগে পজিশন সেট করা
fseek(file, -5, SEEK_END);
printf("Moved 5 bytes backward from the end.\n");
fclose(file);
return 0;
}
এখানে, fseek()
ফাংশনটি ফাইলের পজিশন পরিবর্তন করেছে, এবং আপনি ফাইলের বিভিন্ন অবস্থান থেকে শিফট করেছেন।
ftell()
– বর্তমান পজিশন জানানোftell()
ফাংশনটি একটি ফাইল পয়েন্টারের বর্তমান অবস্থান (পজিশন) প্রদান করে। এটি ফাইলের পজিশন হিসেবে একটি ইন্টিজার রিটার্ন করে, যা ফাইলের শুরুর অবস্থান থেকে পরিমাপ করা হয়।
long ftell(FILE *stream);
stream
: এটি সেই ফাইল পয়েন্টার যা খোলা ফাইলকে নির্দেশ করে।#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("File not found.\n");
return 1;
}
// বর্তমান অবস্থান জানার জন্য ftell ব্যবহার
long position = ftell(file);
printf("Current position: %ld\n", position);
fclose(file);
return 0;
}
এখানে ftell()
ফাংশনটি ফাইলের বর্তমান অবস্থান প্রদান করেছে, যা ফাইলের শুরুর স্থান থেকে কতটা দূরে অবস্থান করছে তা দেখায়।
rewind()
– ফাইলের পজিশন শুরুর অবস্থানে ফিরিয়ে আনাrewind()
ফাংশনটি ফাইলের পয়েন্টারকে ফাইলের শুরুর অবস্থানে ফিরিয়ে নিয়ে যায়। এটি fseek()
এর মতো কাজ করে, তবে rewind()
ফাংশনটি SEEK_SET
থেকে শুরুর অবস্থানে সোজাসুজি চলে যায় এবং ftell()
ফাংশনের মতো ফাইলের পজিশন রিটার্ন করে না।
void rewind(FILE *stream);
stream
: এটি সেই ফাইল পয়েন্টার যা খোলা ফাইলকে নির্দেশ করে।#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("File not found.\n");
return 1;
}
// ফাইলের শুরুর অবস্থানে ফিরে যাওয়া
rewind(file);
printf("File position is reset to the beginning.\n");
fclose(file);
return 0;
}
এখানে rewind()
ফাংশনটি ফাইলের পয়েন্টারকে শুরুর অবস্থানে ফিরিয়ে এনেছে।
ফাংশন | বর্ণনা | সিঙ্কট্যাক্স |
---|---|---|
fseek() | ফাইল পয়েন্টারকে একটি নির্দিষ্ট অবস্থানে স্থানান্তরিত করে। | fseek(FILE *stream, long offset, int whence); |
ftell() | ফাইলের বর্তমান অবস্থান প্রদান করে। | long ftell(FILE *stream); |
rewind() | ফাইল পয়েন্টারকে শুরুর অবস্থানে ফিরিয়ে নিয়ে যায়। | void rewind(FILE *stream); |
fseek()
ফাংশনটি ফাইলের পজিশন পরিবর্তন করে এবং ftell()
বর্তমান পজিশন জানাতে ব্যবহৃত হয়।rewind()
ফাংশনটি ফাইলের পয়েন্টারকে শুরুর অবস্থানে ফিরিয়ে আনে।এই ফাংশনগুলো ফাইলের মধ্যে ডেটা নেভিগেশন করতে সাহায্য করে, যা ফাইলের নির্দিষ্ট অংশে দ্রুত পৌঁছাতে এবং পুনরায় ফাইলটি প্রক্রিয়া করতে সহায়ক।
common.read_more